/**
 * describe:
 *
 * @author chaP
 * @date 2019/01/10
 */

package CodingTest;
/**
 * 将一个按照升序排列的有序数组，转换为一棵高度平衡二叉搜索树。

 本题中，一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

 示例:

 给定有序数组: [-10,-3,0,5,9],

 一个可能的答案是：[0,-3,9,-10,null,5]，它可以表示下面这个高度平衡二叉搜索树：

      0
     / \
   -3   9
   /   /
 -10  5

 */

import sun.reflect.generics.tree.Tree;

public class sortedArrayToBST {
    class TreeNode {
     int val;
     TreeNode left;
     TreeNode right;
     TreeNode(int x) { val = x; }
  }
  TreeNode treeNode = new TreeNode(0);
    public TreeNode sortedArrayToBST(int[] nums) {
        if(nums.length == 0 || nums == null)
            return null;
        return getTree(nums,0,nums.length-1);
    }
    public TreeNode getTree(int[] nums,int low,int high){
        if(low <= high){
            int mid = (low+high)/2;
            TreeNode node = new TreeNode(nums[mid]);
            node.left = getTree(nums,low,mid-1);
            node.right = getTree(nums,mid+1,high);
            return node;
        }else{
            return null;
        }
    }

}
